package com.esaheki.flashcards.classes;
import java.util.ArrayList;

/**
 * User é a classe que mantém um registro de usuários.
 * Um objeto dessa classe encapsula todas as informações pertinentes ao usuário.
 * Essas informações são:
 * <ul>
 * <li>O nome do usuário
 * <li>O aproveitamento médio
 * <li>As categorias de testes
 * </ul>
 * <p>
 * 
 * @author      Elton Saheki Horikoshi <esaheki@gmail.com>
 */
public class User {
	
	/** Id do usuario */
	private int id;
	/** Nome do usuário */
	private String name;
	/** Aproveitamento medio */
	private double averageScore;
	/** Registro de categorias */
	ArrayList<Category> categories = new ArrayList<Category>();
	
	/**
	 * Construtor padrão.
	 */
	public User(String name) {
		this.setName(name);
		this.setAverageScore(0.0);
	}
	
	/**
	 * Registra a id do usuario.
	 * @param id       id a ser registrado
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * Retorna a id do usuario.
	 */
	public int getId() {
		return id;
	}
	
	/**
	 * Retorna o nome do usuário.
	 */
	public String getName() {
		return name;
	}
	
	/**
	 * Registra o nome do usuário.
	 * @param name       o nome a ser registrado
	 */
	public void setName(String name) {
		this.name = name;
	}
	
	/**
	 * Retorna o aproveitamento medio do usuário.
	 */
	public double getAverageScore() {
		return averageScore;
	}
	
	/**
	 * Registra o aproveitamento medio do usuário.
	 * @param averageScore       o valor do aproveitamento
	 */
	public void setAverageScore(double averageScore) {
		this.averageScore = averageScore;
	}

	/**
	 * Retorna lista de categorias do usuário.
	 */
	public ArrayList<Category> getCategories() {
		return categories;
	}

	/**
	 * Registra a lista de categorias do usuário.
	 * @param categories       lista de categorias
	 */
	public void setCategories(ArrayList<Category> categories) {
		this.categories = categories;
	}
	
	public String toString() {
		return this.getName();
	}
}
